iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
Cloud Native

駕馭商用容器叢集,汪洋漂流術系列 第 20

【Day 20】 自製容器, Linux 以外的環境,運行 oc-mirror

  • 分享至 

  • xImage
  •  

前言

在本系列 【Day 17】 私有 Quay Registry 與 oc mirror 提到用 oc-mirror

說明

  • 在慣用的 MacOS 下沒有 oc-mirror,不過因為開發需求,要使用乾坤大挪移時會很麻煩。
  • 系統不符? 那不就可以用容器來提供需要的環境就好了?!

準備容器

取得原始碼

  • 到 oc-mirror 的 GitHub 頁面,clone 源碼
    • 連結:https://github.com/openshift/oc-mirror
  • 在特定開發目錄下,運作指令
    git clone https://github.com/openshift/oc-mirror
    

Dockerfile

  • 同一個目錄下,寫一支 Dockerfile,內容如下:
    # 使用 Red Hat UBI 基礎映像
    FROM registry.access.redhat.com/ubi9/ubi-minimal:latest
    
    # 設定工作目錄
    WORKDIR /usr/local/bin
    
    # 複製 oc-mirror binary (需自行放到 build context)
    COPY oc-mirror /usr/local/bin/oc-mirror
    
    # 確保 binary 有執行權限
    RUN chmod +x /usr/local/bin/oc-mirror
    
    # 預設工作目錄 (給使用者掛載 config/output)
    WORKDIR /workspace
    
    # 預設 entrypoint
    ENTRYPOINT ["oc-mirror"]
    

建立 Image

  • 用 docker 或 podman 來做
# 假設 Dockerfile 與 oc-mirror binary 在同一個目錄
docker build -t oc-mirror:latest .

  • 測試包好的 Image 是否可用
docker run --rm -it oc-mirror:latest version

在 MacOS 上運行 oc-mirror

  • 因為目前 oc-mirror 沒有原生 macOS ARM 版本。
  • 但你可以透過「x86_64 Linux 虛擬機」執行它,再將輸出結果(鏡像檔)帶回 macOS。 這可以透過 Podman Machine 或 Colima / UTM / Lima / Docker Desktop 達成。
方法 描述 難度 效能 適合誰
🧰 Podman x86_64 VM (官方推薦) 用 Podman Machine 啟動一台 x86_64 Linux VM ★★★ 🐢 較慢 (QEMU 模擬) 想保留 Red Hat 原生環境的使用者
🐳 Docker Desktop + amd64 容器 用 Docker Desktop 的 “Use Rosetta for x86/amd64” 功能 ★★☆ ⚡ 普通 已安裝 Docker Desktop
🖥️ UTM / Lima 直接啟動 x86_64 Linux VM 用 UTM 建一台 CentOS/RHEL VM,裡面跑 oc-mirror ★★ ⚡⚡ 快 想長期離線維護鏡像的人

作法一 / Podman Machine / 安裝流程

  1. 移除舊有的 podman machine
podman machine stop
podman machine rm -f
  1. 以 x86_64 建立 VM(使用 QEMU 模擬)
podman machine init --now --cpus=4 --memory=8192 --disk-size=40 --image-path /path/to/podman-machine.qcow2 --vm-type qemu --qemu-args "-machine accel=tcg" --arch x86_64
  1. 登入 VM 並下載 oc-mirror (x86_64)
podman machine ssh
curl -L https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/oc-mirror.tar.gz -o oc-mirror.tar.gz
tar -xzf oc-mirror.tar.gz
chmod +x oc-mirror
./oc-mirror version
  1. 掛載目錄回 macOS 主機
podman machine ssh "mkdir -p /work"
podman mount <container_id>

完成

  • 掛載對應的東西,直接使用
docker run --rm -it \
  -v $(pwd)/config.yaml:/config.yaml \
  -v $(pwd)/mirror-data:/mirror-data \
  oc-mirror:latest --config /config.yaml file://mirror-data

上一篇
【Day 19】 從 Docker 棄坑、你需要使用 Podman 的理由
下一篇
【Day 21】 認識叢集的四大監控與觀測工具
系列文
駕馭商用容器叢集,汪洋漂流術31
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言